package cn.com.huzo.repository.master;

import cn.com.huzo.model.entities.master.SupplierEntity;
import huzofw.repository.GenericRepository;
import java.util.List;
import java.util.Map;

/**
 * 供应商数据访问对象接口。
 *
 * @author 吴旭
 */
public interface SupplierRepository extends GenericRepository<SupplierEntity, Long> {

    /**
     * 根据给定ID取得供应商信息对象。
     *
     * @param rootNodeName 供应商目录根节点名称
     * @param groupRootNode 用户分组根节点名称
     * @param key 供应商标识
     * @return 供应商信息对象
     */
    SupplierEntity fetchByKey(String rootNodeName, String groupRootNode, Long key);

    /**
     * 根据给定供应商编码取得供应商信息对象。
     *
     * @param rootNodeName 部门根节点名称
     * @param supplierNo 供应商编号
     * @return 供应商信息对象
     */
    SupplierEntity fetchBySupplierNo(String rootNodeName, String supplierNo);

    /**
     * 取得供应商表的字段名称列表。
     *
     * @return 字段名称和汉字描述列表
     */
    List<SupplierEntity> fetchAllFields();

    /**
     * 根据给定导出条件取得供应商信息对象。
     *
     * <p>
     * @param criterion 导出过滤条件
     * @return 供应商信息对象
     */
    List<String> fetchExportData(Map<String, Object> criterion);

    /**
     * 批量更新供应商所属目录。
     *
     * @param itemList 要更新的供应商数据列表
     * @return 影响的行数
     */
    Integer batchChangeCatalogue(List<SupplierEntity> itemList);
}
